﻿/*------------------------------------------------------------------------

VERTEXREGISTRYDDOPENGL.HPP v1.0.2

Copyright 楊志賢 CxxlMan, 2014 - 2015
All Rights Reserved

DD_OpenGL 內部用，RD 未定義

------------------------------------------------------------------------*/

#if !defined(__VERTEXREGISTRYDDOPENGL_HPP_Cxxl3D)
#define __VERTEXREGISTRYDDOPENGL_HPP_Cxxl3D

#include <Render\Render_Win32\Render_Win32_OpenGL\RENDER_WIN32_OPENGL.HPP>
#include <Sys\RenderUnit\SysDatagramDisposal_OpenGL\VERTEXDDOPENGL.HPP>

// 元件介面的識別碼
#define IVertexRegistryOpenGL_ClassID L"1CECB4234B084c108FC97E4B73A2542B"

template <typename VERTEXFMT>
class CVertexDD;


namespace Cxxl3D
{

// 用於登記目前作用中的 IVertexDD
class IVertexRegistryDDOpenGL:public IDatagramDisposal_OpenGL
{
  // 登記目前作用中的 IVertexDD
  virtual void cxxlFASTCALL Set(const CxxlMan::Smart_Ptr<IVertexDD> &IVertexDD_Arg) = 0;

public:
  // Constructor
  IVertexRegistryDDOpenGL()
    :cxxlObject(CxxlMan::Spirit_Easy)
  {
  }

  // Destructor
  virtual ~IVertexRegistryDDOpenGL()
  {}

  // 取得目前登記作用中的 IVertexDD
  virtual CxxlMan::Smart_Ptr<IVertexDD> cxxlFASTCALL Get() = 0;

  template <typename VERTEXFMT>
  friend class CVertexDD;
};


}   /* namespace Cxxl3D */
#endif

